Doors Access violation

Bonjour,

En exécutant un script DXL je suis tombé là dedans:


DOORS: **** Translating a structured exception ****
DOORS: Version 9.2.0.0, build number 92163, built on May 12 2009 12:49:39.
DOORS: Whistler Workstation Service Pack 3 (Build 2600)

DOORS: DOORS: 70 percent of memory is in use.
DOORS: There are 2088432 total Kbytes of physical memory.
DOORS: There are 621160 free Kbytes of physical memory.
DOORS: There are 2709416 total Kbytes of paging file.
DOORS: There are 1393064 free Kbytes of paging file.
DOORS: There are 1fff80 total Kbytes of virtual memory.
DOORS: There are 1a5a0c free Kbytes of virtual memory.

DOORS: argv[0]: C:\Program Files\IBM\Rational\DOORS\9.2\bin\doors.exe
DOORS: doors.exe caused an EXCEPTION_ACCESS_VIOLATION in module MSVCR80.dll at 001B:781444DC, strlen()+0012 byte(s)
DOORS: 001B:781444DC (0x00000052 0x00000080 0x07512EE0 0x0012EB70) MSVCR80.dll, strlen()+0012 byte(s)
DOORS: **** end of event ****
DOORS: **** Translating a structured exception ****
DOORS: Version 9.2.0.0, build number 92163, built on May 12 2009 12:49:39.
DOORS: Whistler Workstation Service Pack 3 (Build 2600)

DOORS: DOORS: 70 percent of memory is in use.
DOORS: There are 2088432 total Kbytes of physical memory.
DOORS: There are 613992 free Kbytes of physical memory.
DOORS: There are 2709416 total Kbytes of paging file.
DOORS: There are 1380060 free Kbytes of paging file.
DOORS: There are 1fff80 total Kbytes of virtual memory.
DOORS: There are 1a5d5c free Kbytes of virtual memory.

DOORS: argv[0]: C:\Program Files\IBM\Rational\DOORS\9.2\bin\doors.exe
DOORS: doors.exe caused an EXCEPTION_ACCESS_VIOLATION in module MSVCR80.dll at 001B:781444DC, strlen()+0012 byte(s)
DOORS: 001B:781444DC (0x00000052 0x00000080 0x07508590 0x0012EB70) MSVCR80.dll, strlen()+0012 byte(s)
DOORS: **** end of event ****
DOORS: **** Translating a structured exception ****
DOORS: Version 9.2.0.0, build number 92163, built on May 12 2009 12:49:39.
DOORS: Whistler Workstation Service Pack 3 (Build 2600)

DOORS: DOORS: 70 percent of memory is in use.
DOORS: There are 2088432 total Kbytes of physical memory.
DOORS: There are 620084 free Kbytes of physical memory.
DOORS: There are 2709416 total Kbytes of paging file.
DOORS: There are 1392500 free Kbytes of paging file.
DOORS: There are 1fff80 total Kbytes of virtual memory.
DOORS: There are 1a5d5c free Kbytes of virtual memory.

DOORS: argv[0]: C:\Program Files\IBM\Rational\DOORS\9.2\bin\doors.exe
DOORS: doors.exe caused an EXCEPTION_ACCESS_VIOLATION in module MSVCR80.dll at 001B:781444DC, strlen()+0012 byte(s)
DOORS: 001B:781444DC (0x00000052 0x00000080 0x07515040 0x0012EB70) MSVCR80.dll, strlen()+0012 byte(s)
DOORS: **** end of event ****
DOORS: **** Translating a structured exception ****
DOORS: Version 9.2.0.0, build number 92163, built on May 12 2009 12:49:39.
DOORS: Whistler Workstation Service Pack 3 (Build 2600)

DOORS: DOORS: 70 percent of memory is in use.
DOORS: There are 2088432 total Kbytes of physical memory.
DOORS: There are 619916 free Kbytes of physical memory.
DOORS: There are 2709416 total Kbytes of paging file.
DOORS: There are 1392572 free Kbytes of paging file.
DOORS: There are 1fff80 total Kbytes of virtual memory.
DOORS: There are 1a5d5c free Kbytes of virtual memory.

DOORS: argv[0]: C:\Program Files\IBM\Rational\DOORS\9.2\bin\doors.exe
DOORS: doors.exe caused an EXCEPTION_ACCESS_VIOLATION in module MSVCR80.dll at 001B:781444DC, strlen()+0012 byte(s)
DOORS: 001B:781444DC (0x00000052 0x00000080 0x0750E930 0x0012EB70) MSVCR80.dll, strlen()+0012 byte(s)
DOORS: **** end of event ****



Je pense que la source du problème c'est que j'instanciais un Array, et que je mettais dedans des éléments n'étant pas tous du même type (notamment j'avais des int dans une colonne et des string dans une autre colonne).

Cdlt,
V. Belaïche.
SystemAdmin - Thu Feb 10 03:56:04 EST 2011

Re: Doors Access violation
Mathias Mamsch - Thu Feb 10 05:53:49 EST 2011

You need to be very careful with the type of data that you put in Skip lists and Arrays. If you put in one type (e.g. int) and read out another type (e.g. string) you almost always will get an exception. The exception log is normally only useful for IBM programmers. So what can we do for you? If you want to find & fix the error you should post the relevant parts of the code. Regards, Mathias

Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

Re: Doors Access violation
llandale - Thu Feb 10 12:42:27 EST 2011

That exception info isn't very useful, but the displayed DXL errors are since it tells you which line of code and sometimes what the problem might be.

  • Louie

Re: Doors Access violation
SystemAdmin - Fri Feb 11 08:21:57 EST 2011

Hi,

I have found a work-around using two one-dimensional arrays.

I think I have written and read the same type, but one thing was that the Array did not have the same type on each element.

Here is a minimal example:

Array toto = create(1,2);

put(toto,"salut",0,0);
put(toto,666,0,1);

int x;
string y;

y = get(toto,0,0);
x = get(toto,0,1);


(0,0) is a string, (0,1) is an integer, writing and reading are consistent with that, but there is an access violation.

Well, that's fine: the only problem is that the documentation does not warns that all elements have to be of the same type.

Vincent.

Re: Doors Access violation
SystemAdmin - Fri Feb 11 08:56:20 EST 2011

SystemAdmin - Fri Feb 11 08:21:57 EST 2011
Hi,

I have found a work-around using two one-dimensional arrays.

I think I have written and read the same type, but one thing was that the Array did not have the same type on each element.

Here is a minimal example:


Array toto = create(1,2);

put(toto,"salut",0,0);
put(toto,666,0,1);

int x;
string y;

y = get(toto,0,0);
x = get(toto,0,1);


(0,0) is a string, (0,1) is an integer, writing and reading are consistent with that, but there is an access violation.

Well, that's fine: the only problem is that the documentation does not warns that all elements have to be of the same type.

Vincent.

The elements do not have to be of the same type, you just have to know the type and do a cast to the correct type, so your example can be re-done as
 

Array toto = create(1,2);
 
put(toto,"salut",0,0);
put(toto,666,0,1);
 
int x;
string y;
 
y = (string get(toto,0,0))
x = (int get(toto,0,1))
 
print y " " x ""

 


The DXL Help has this advice: "Returns the data, of any type, stored in array a at position (x, y). You must retrieve the data into a variable of the same type as used when the data was put into the array. To ensure that this works unambiguously in the way intended, you should use a cast prefix to the get command."

 

Re: Doors Access violation
SystemAdmin - Fri Feb 11 10:23:12 EST 2011

Thanks!

ISSUE SOLVED